Communication networks and the number of users of such networks continue to increase. On-line sales involving both business-to-business and business to consumer over the Internet continues to proliferate. Additionally, the number of people that are telecommuting continues to grow. Both on-line sales and telecommuting are examples of usage of communication networks that typically involve private and sensitive data that needs to be protected during its transmission across the different communication networks.
Accordingly, security protocols, (e.g., Transport Layer Security (TLS), Secure Sockets Layer (SSL) 3.0, Internet Protocol Security (IPSec), etc.), have been developed to establish secure sessions between remote systems. These security protocols provide a method for remote systems to establish a secure session through message exchange and calculations, thereby allowing sensitive data being transmitted across the different communication networks to have a measure of security and/or untamperability.
Moreover, different operations related to encryption and decryption (such as Advanced Encryption Standard (AES), Data Encryption Standard (DES), RC4, hashing, etc.) have been developed to allow for these secure communications using such different security protocols. One current approach for the processing of these data encryption/decryption operations is to have a general-purpose processor execute software applications associated with the different data ciphering operations. While flexible enough to typically accommodate the different permutations of a given data ciphering operation, such an approach is typically slow in its execution of the operation. Further, this approach can include a very complex set of microinstructions associated with a given encryption/decryption operation. Accordingly, a large amount of memory is needed to store these microinstructions. In turn, the processor designed to process such instructions is typically very complex.
Another conventional approach for the processing of these data ciphering operations is to have a specific hardware state machine for each of the different data ciphering operations. While typically faster in execution in comparison to the software approach described above, such an approach lacks the flexibility to handle variations on the different data ciphering operations. One approach to this lack of flexibility could include having a different hardware state machine for the different variations of the different data ciphering operations. However, this approach can be prohibitively too expensive, complex and can require too large of an area in terms of the size of the chip handling all of the different variations of the different ciphering operations.